시스템 프롬프트

Anthropic
Claude에서 열기
이 강좌에 대해 질문하기
노트 복사
LLM용 전체 강좌 노트 복사

시스템 프롬프트는 Claude가 사용자 입력에 응답하는 방식을 커스터마이징하는 강력한 수단입니다. 일반적인 답변 대신, 특정 사용 사례에 맞게 Claude의 어조, 스타일, 접근 방식을 조정할 수 있습니다.

시스템 프롬프트가 중요한 이유

수학 튜터 챗봇을 만든다고 가정해봅시다. 학생이 "5x + 2 = 3에서 x를 어떻게 풀어요?"라고 물을 때, 단순히 답을 내뱉는 것이 아니라 실제 튜터처럼 행동하기를 원할 것입니다. 좋은 수학 튜터라면:

  • 처음에는 완전한 풀이 대신 힌트를 제공해야 합니다
  • 학생이 문제를 단계별로 차근차근 풀어나갈 수 있도록 인내심 있게 안내해야 합니다
  • 비슷한 문제의 풀이를 예시로 보여줘야 합니다

Claude가 다음과 같이 행동하는 것은 절대로 원하지 않을 것입니다:

  • 즉시 직접적인 답을 알려주는 것
  • 학생에게 그냥 계산기를 사용하라고 말하는 것

시스템 프롬프트 작동 방식

시스템 프롬프트는 Claude에게 응답 방법에 대한 지침을 제공합니다. 일반 문자열로 정의한 후 create 함수 호출에 전달합니다. 주요 이점은 다음과 같습니다:

  • 시스템 프롬프트는 Claude에게 응답 방법에 대한 지침을 제공합니다
  • Claude는 지정된 역할을 가진 사람이 응답하는 것과 같은 방식으로 응답하려고 합니다
  • Claude가 과제에 집중하도록 도와줍니다

기본 구조는 다음과 같습니다:

system_prompt = """
You are a patient math tutor.
Do not directly answer a student's questions.
Guide them to a solution step by step.
"""

client.messages.create(
    model=model,
    messages=messages,
    max_tokens=1000,
    system=system_prompt
)

차이 확인하기

시스템 프롬프트 없이는 Claude가 즉시 완전한 단계별 풀이를 제공합니다. 이것이 도움이 될 수도 있지만, 학생 스스로 문제를 생각해보도록 독려하지는 않습니다.

수학 튜터 시스템 프롬프트를 사용하면 Claude의 응답이 극적으로 바뀝니다. 완전한 풀이를 제공하는 대신, "x를 분리하기 위한 첫 번째 좋은 단계는 무엇일까요? 항을 이동하기 시작하려면 양변에 어떤 연산을 수행해야 할지 생각해보세요."와 같은 안내 질문을 합니다.

유연한 채팅 함수 만들기

시스템 프롬프트를 하드코딩하는 대신, 시스템 프롬프트를 매개변수로 받아 채팅 함수를 더 재사용 가능하게 만들 수 있습니다:

def chat(messages, system=None):
    params = {
        "model": model,
        "max_tokens": 1000,
        "messages": messages,
    }
    
    if system:
        params["system"] = system
    
    message = client.messages.create(**params)
    return message.content[0].text

이 방식은 중요한 세부 사항을 처리합니다: Claude의 API는 system=None을 허용하지 않으므로, system 매개변수가 제공된 경우에만 조건부로 포함해야 합니다.

이제 시스템 프롬프트 유무에 관계없이 채팅 함수를 호출할 수 있습니다:

# Without system prompt
answer = chat(messages)

# With system prompt
system = """
You are a patient math tutor.
Do not directly answer a student's questions.
Guide them to a solution step by step.
"""
answer = chat(messages, system=system)

시스템 프롬프트는 의도한 목적에 맞게 일관되고 적절하게 동작하는 AI 애플리케이션을 만드는 데 필수적입니다. 일반적인 AI 응답을 특화되고 역할에 맞는 상호작용으로 변환합니다.